package com.demo.java.OD1_50.OD37;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【字符串变换最小字符串】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145558861
 */
public class OdMain {
    public static void main(String[] args) {
        try {
            // 读取输入字符串
            Scanner scanner = new Scanner(System.in);
            String s = scanner.nextLine();

            // 将输入字符串转为字符数组
            char[] charArray = s.toCharArray();
            int indexToSwap = findIndexToSwap(charArray);

            // 如果找到交换位置，执行交换并打印结果
            if (indexToSwap != -1) {
                swapAndPrint(charArray, indexToSwap);
            } else {
                // 如果无需交换，直接输出原字符串
                System.out.println(s);
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    // 查找需要交换的位置
    private static int findIndexToSwap(char[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            // 通过双重循环比较字符并交换
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[i] > arr[j]) {
                    swap(arr, i, j);  // 交换字符
                    return i;  // 返回交换位置
                }
            }
        }
        return -1;  // 如果没有找到需要交换的字符，返回 -1
    }

    // 执行交换并输出结果
    private static void swapAndPrint(char[] arr, int index) {
        System.out.println(String.valueOf(arr));  // 输出交换后的字符串
    }

    // 交换字符数组中的两个字符
    private static void swap(char[] arr, int i, int j) {
        char temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}